package com.cloudbroker.bcs.platform.ltb.bizapi.service.viewpoint;

import com.cloudbroker.bcs.common.annotation.CreditsOper;
import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.annotation.RequiredPermissions;
import com.cloudbroker.bcs.common.constants.type.BusinessType;
import com.cloudbroker.bcs.platform.ltb.bizapi.constants.PermissionsValue;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.viewpoint.result.*;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.viewpoint.vo.*;

public interface ViewPointBizService {

    /**
     * 新建观点
     */

    public ViewpointSaveResult funcSaveViewpoint(ViewpointSaveForm viewpointSaveForm);


    /**
     * 观点展示(投顾)
     */

    public ViewpointList funcViewpointList(ViewpointQueryForm viewpointQueryForm);

    /**
     * 观点展示(粉丝)
     */
    @NoLogin
    public ViewpointRecomList funcViewpointRecomList(ViewpointRecomQueryForm viewpointRecomQueryForm);

    /**
     * 观点点赞
     *
     * @return ViewpointUpvoteResult
     */
    @CreditsOper(type= BusinessType.PRAISE)
    public ViewpointUpvoteResult funcViewpointUpvote(ViewpointUpvoteForm viewpointUpvoteForm);

    /**
     * 观点分享
     *
     * @return ViewpointUpvoteResult
     */
    @CreditsOper(type= BusinessType.SHARE)
    public ViewpointShareResult funcViewpointShare(ViewpointShareForm viewpointShareForm);

    /**
     * 观点修改
     *
     * @return ViewpointUpvoteResult
     */
    public ViewpointSaveResult funcViewpointUpdate(ViewpointUpdateForm viewpointUpdateForm);

    /**
     * 投顾的观点查询
     *
     * @return ViewpointUpvoteResult
     */
    @NoLogin
    public ViewpointRecomList funcQueryAdviserViewpoint(AdviserViewpointQueryForm adviserViewpointQueryForm);


    /**
     * 推荐观点查询
     *
     * @return ViewpointUpvoteResult
     */
    @NoLogin
    public ViewpointRecomList funcQueryRecommendViewpoint(ViewpointRecomQueryForm viewpointRecomQueryForm);


    public ViewpointSaveResult funcCloseViewpoint(ViewPointIdForm form);

    public ViewpointSaveResult funcCancelCloseViewpoint(ViewPointIdForm form);

    @NoLogin
    public ViewpointDetailResult funcViewpointDetail(ViewPointIdForm form);

    @NoLogin
    public ViewpointTagListResult funcQueryViewpointTag(ViewpointTagQueryForm form);

    @NoLogin
    public ViewpointTopicListResult funcQueryViewpointTopic(ViewpointTopicQueryForm form);

    public ViewpointTopicSaveResult funcSaveViewpointTopic(ViewpointTopicSaveForm form);

    public ViewpointTopicSaveResult funcUpdateViewpointTopic(ViewpointTopicUpdateForm form);

    public ViewpointTopicSaveResult funcCloseViewpointTopic(ViewpointTopicCloseForm form);

    public ViewpointTagSaveResult funcCloseViewpointTag(ViewpointTagCloseForm form);

    public ViewpointTagSaveResult funcUpdateViewpointTag(ViewpointTagUpdateForm form);

    public ViewpointTagSaveResult funcSaveViewpointTag(ViewpointTagForm form);

    @NoLogin
    public ViewpointTopicDetailResult funcViewpointTopicDetail(ViewpointTopicDetailForm form);

    @NoLogin
    public ViewpointRecomList funcViewpointSearch(ViewpointQueryForm form);

}
